package Recursion;

public class Test {
    public static void main(String[] args) {
        //求阶乘
//        int result = factorial(5);
//        System.out.println("阶乘："+result);

        //0到n项和
//        int num=sum(5);
//        System.out.println("0到n项和："+num);

//        斐波那契数列第n项
        int cur=fib(26);
        System.out.println("斐波那契数列第n项："+cur);


        //组成数字之和
//        int sum;
//        int num = formSum(999);
//        System.out.println(num);
    }

    private static int formSum(int i) {
        if(i/10==0){
            return i;
        }
         return formSum(i/10)+i%10;
    }


    //斐波那契数列第n项
    private static int fib(int n) {
//        if (n <= 2) {
//            return 1;
//        }
//        return fib(n - 2) + fib(n - 1);
        int a=0;
        int b=1;
        int c=0;
        if(n==0){
            return 0;
        }else if(n==1){
            return 1;
        }else{
            for(int i=0;i<n-1;i++){
                c=a+b;
                a=b;
                b=c;
            }
            return c;

        }
    }


    //求阶乘
    public static int factorial(int n) {
        if (n < 2) {
            return n;
        }
        return factorial(n - 1) * n;
    }

    //求0到n项和
    public static int sum(int n) {
        if (n < 2) {
            return n;
        }
        return sum(n - 1) + n;
    }

}
